From: Keir Fraser Date: Thu, 17 Jan 2008 14:40:55 +0000 (+0000) Subject: minios: add trydown X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~14445^2~29 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22Dat/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22Dat?a=commitdiff_plain;h=69ca1c28b492eab7bc28491cd5f6b7c4e8fdcb34;p=xen.git minios: add trydown Signed-off-by: Samuel Thibault --- diff --git a/extras/mini-os/include/semaphore.h b/extras/mini-os/include/semaphore.h index 261cd7e5da..19f515a1f1 100644 --- a/extras/mini-os/include/semaphore.h +++ b/extras/mini-os/include/semaphore.h @@ -49,6 +49,19 @@ static inline void init_SEMAPHORE(struct semaphore *sem, int count) #define init_MUTEX(sem) init_SEMAPHORE(sem, 1) +static inline int trydown(struct semaphore *sem) +{ + unsigned long flags; + int ret = 0; + local_irq_save(flags); + if (sem->count > 0) { + ret = 1; + sem->count--; + } + local_irq_restore(flags); + return ret; +} + static void inline down(struct semaphore *sem) { unsigned long flags;